package com.qf.aop;

import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;

/*
 *@Description:
 *@author:刘哥
 *@Date:17:13 2022/7/12
 */
@Aspect//声明切面
@Component//创建bean
public class aopTest {
//    定义切入点
    @Pointcut("execution(* com.qf.service.impl.*.*(..))")
    public void pc(){}
//    @Around("pc()") // 环绕通知
//    环绕增强︰调用原始方法（如果不调用原始方法则原始方法不执行)
//    ProceedingJoinPoint连接点对象（被拦截的方法)
//环绕增强：调用原始方法（如果不调用原始方法则原始方法不执行）
//ProceedingJoinPoint 连接点对象（被拦截的方法）
    @Around("pc()")
    public Object myAround(ProceedingJoinPoint joinPoint){
        try {
            System.out.println("我来咋骗了");
//            调用添加通知的方法
            Object proceed = joinPoint.proceed();
            System.out.println("居然没骗到");
            return proceed;
        } catch (Throwable e) {
            e.printStackTrace();
            System.out.println("异常");
        } finally {
            System.out.println("我还会回来的");
        }

        return null;
    }
}
